{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 标量归问题示例\n",
    "#### 波士顿房价数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras.datasets import boston_housing\n",
    "(train_data, train_targets), (test_data, test_targets) = (\n",
    "    boston_housing.load_data())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "训练集数据形状: (404, 13)\n",
      "训练集目标值形状: (404,)\n",
      "测试集数据形状: (102, 13)\n",
      "测试集目标值形状: (102,)\n",
      "\n",
      "训练集前5个样本:\n",
      "[[1.23247e+00 0.00000e+00 8.14000e+00 0.00000e+00 5.38000e-01 6.14200e+00\n",
      "  9.17000e+01 3.97690e+00 4.00000e+00 3.07000e+02 2.10000e+01 3.96900e+02\n",
      "  1.87200e+01]\n",
      " [2.17700e-02 8.25000e+01 2.03000e+00 0.00000e+00 4.15000e-01 7.61000e+00\n",
      "  1.57000e+01 6.27000e+00 2.00000e+00 3.48000e+02 1.47000e+01 3.95380e+02\n",
      "  3.11000e+00]\n",
      " [4.89822e+00 0.00000e+00 1.81000e+01 0.00000e+00 6.31000e-01 4.97000e+00\n",
      "  1.00000e+02 1.33250e+00 2.40000e+01 6.66000e+02 2.02000e+01 3.75520e+02\n",
      "  3.26000e+00]\n",
      " [3.96100e-02 0.00000e+00 5.19000e+00 0.00000e+00 5.15000e-01 6.03700e+00\n",
      "  3.45000e+01 5.98530e+00 5.00000e+00 2.24000e+02 2.02000e+01 3.96900e+02\n",
      "  8.01000e+00]\n",
      " [3.69311e+00 0.00000e+00 1.81000e+01 0.00000e+00 7.13000e-01 6.37600e+00\n",
      "  8.84000e+01 2.56710e+00 2.40000e+01 6.66000e+02 2.02000e+01 3.91430e+02\n",
      "  1.46500e+01]]\n",
      "\n",
      "训练集前5个目标值:\n",
      "[15.2 42.3 50.  21.1 17.7]\n"
     ]
    }
   ],
   "source": [
    "print(\"训练集数据形状:\", train_data.shape)\n",
    "print(\"训练集目标值形状:\", train_targets.shape)\n",
    "print(\"测试集数据形状:\", test_data.shape) \n",
    "print(\"测试集目标值形状:\", test_targets.shape)\n",
    "\n",
    "print(\"\\n训练集前5个样本:\")\n",
    "print(train_data[:5])\n",
    "print(\"\\n训练集前5个目标值:\")\n",
    "print(train_targets[:5])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "标准化后训练集前5个样本:\n",
      "[[-0.27224633 -0.48361547 -0.43576161 -0.25683275 -0.1652266  -0.1764426\n",
      "   0.81306188  0.1166983  -0.62624905 -0.59517003  1.14850044  0.44807713\n",
      "   0.8252202 ]\n",
      " [-0.40342651  2.99178419 -1.33391162 -0.25683275 -1.21518188  1.89434613\n",
      "  -1.91036058  1.24758524 -0.85646254 -0.34843254 -1.71818909  0.43190599\n",
      "  -1.32920239]\n",
      " [ 0.1249402  -0.48361547  1.0283258  -0.25683275  0.62864202 -1.82968811\n",
      "   1.11048828 -1.18743907  1.67588577  1.5652875   0.78447637  0.22061726\n",
      "  -1.30850006]\n",
      " [-0.40149354 -0.48361547 -0.86940196 -0.25683275 -0.3615597  -0.3245576\n",
      "  -1.23667187  1.10717989 -0.51114231 -1.094663    0.78447637  0.44807713\n",
      "  -0.65292624]\n",
      " [-0.0056343  -0.48361547  1.0283258  -0.25683275  1.32861221  0.15364225\n",
      "   0.69480801 -0.57857203  1.67588577  1.5652875   0.78447637  0.3898823\n",
      "   0.26349695]]\n"
     ]
    }
   ],
   "source": [
    "# 数据标准化：减去平均值，除以标准差\n",
    "mean = train_data.mean(axis=0)\n",
    "std = train_data.std(axis=0)\n",
    "\n",
    "train_data = (train_data - mean) / std\n",
    "test_data = (test_data - mean) / std\n",
    "\n",
    "print(\"标准化后训练集前5个样本:\")\n",
    "print(train_data[:5])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\">Model: \"sequential_14\"</span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1mModel: \"sequential_14\"\u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃<span style=\"font-weight: bold\"> Layer (type)                    </span>┃<span style=\"font-weight: bold\"> Output Shape           </span>┃<span style=\"font-weight: bold\">       Param # </span>┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ dense_42 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)             │           <span style=\"color: #00af00; text-decoration-color: #00af00\">896</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_43 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">64</span>)             │         <span style=\"color: #00af00; text-decoration-color: #00af00\">4,160</span> │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_44 (<span style=\"color: #0087ff; text-decoration-color: #0087ff\">Dense</span>)                │ (<span style=\"color: #00d7ff; text-decoration-color: #00d7ff\">None</span>, <span style=\"color: #00af00; text-decoration-color: #00af00\">1</span>)              │            <span style=\"color: #00af00; text-decoration-color: #00af00\">65</span> │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
       "</pre>\n"
      ],
      "text/plain": [
       "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
       "┃\u001b[1m \u001b[0m\u001b[1mLayer (type)                   \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape          \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m      Param #\u001b[0m\u001b[1m \u001b[0m┃\n",
       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
       "│ dense_42 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m)             │           \u001b[38;5;34m896\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_43 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m)             │         \u001b[38;5;34m4,160\u001b[0m │\n",
       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
       "│ dense_44 (\u001b[38;5;33mDense\u001b[0m)                │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m)              │            \u001b[38;5;34m65\u001b[0m │\n",
       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Total params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">5,121</span> (20.00 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m5,121\u001b[0m (20.00 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">5,121</span> (20.00 KB)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m5,121\u001b[0m (20.00 KB)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"font-weight: bold\"> Non-trainable params: </span><span style=\"color: #00af00; text-decoration-color: #00af00\">0</span> (0.00 B)\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from tensorflow.keras import models\n",
    "from tensorflow.keras import layers\n",
    "\n",
    "def build_model():\n",
    "    model = models.Sequential()\n",
    "    model.add(layers.Dense(64, activation='relu', input_shape=(train_data.shape[1],)))\n",
    "    model.add(layers.Dense(64, activation='relu'))\n",
    "    model.add(layers.Dense(1))\n",
    "    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])\n",
    "    return model\n",
    "#mse均方误差，mae平均绝对误差\n",
    "model = build_model()\n",
    "model.summary()#打印模型结构\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing fold #0\n",
      "Processing fold #1\n",
      "Processing fold #2\n",
      "Processing fold #3\n",
      "Processing fold #4\n",
      "\n",
      "Validation MAE scores: [1.7001380920410156, 2.5106201171875, 2.2392616271972656, 2.505876064300537, 2.3964085578918457]\n",
      "Average MAE score: 2.2704608917236326\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "k = 5\n",
    "num_val_samples = len(train_data) // k\n",
    "num_epochs = 100\n",
    "all_scores = []\n",
    "\n",
    "for i in range(k):\n",
    "    print(f'Processing fold #{i}')\n",
    "    # Prepare validation data: data from partition #i\n",
    "    val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]\n",
    "    val_targets = train_targets[i * num_val_samples: (i + 1) * num_val_samples]\n",
    "    \n",
    "    # Prepare training data: data from all other partitions\n",
    "    partial_train_data = np.concatenate(\n",
    "        [train_data[:i * num_val_samples],\n",
    "         train_data[(i + 1) * num_val_samples:]],\n",
    "        axis=0)\n",
    "    partial_train_targets = np.concatenate(\n",
    "        [train_targets[:i * num_val_samples],\n",
    "         train_targets[(i + 1) * num_val_samples:]],\n",
    "        axis=0)\n",
    "    \n",
    "    # Build the Keras model\n",
    "    model = build_model()\n",
    "    \n",
    "    # Train the model\n",
    "    history = model.fit(\n",
    "        partial_train_data,\n",
    "        partial_train_targets,\n",
    "        epochs=num_epochs,\n",
    "        batch_size=16,\n",
    "        verbose=0)\n",
    "    \n",
    "    # Evaluate the model on the validation data\n",
    "    val_mse, val_mae = model.evaluate(val_data, val_targets, verbose=0)\n",
    "    all_scores.append(val_mae)\n",
    "\n",
    "print(f'\\nValidation MAE scores: {all_scores}')\n",
    "print(f'Average MAE score: {np.mean(all_scores)}')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing fold #0\n",
      "Processing fold #1\n",
      "Processing fold #2\n",
      "Processing fold #3\n",
      "Processing fold #4\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 重置k折交叉验证\n",
    "k = 5\n",
    "num_val_samples = len(train_data) // k\n",
    "num_epochs = 100\n",
    "all_mae_histories = []\n",
    "\n",
    "for i in range(k):\n",
    "    print(f'Processing fold #{i}')\n",
    "    val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]\n",
    "    val_targets = train_targets[i * num_val_samples: (i + 1) * num_val_samples]\n",
    "    \n",
    "    partial_train_data = np.concatenate(\n",
    "        [train_data[:i * num_val_samples],\n",
    "         train_data[(i + 1) * num_val_samples:]],\n",
    "        axis=0)\n",
    "    partial_train_targets = np.concatenate(\n",
    "        [train_targets[:i * num_val_samples],\n",
    "         train_targets[(i + 1) * num_val_samples:]],\n",
    "        axis=0)\n",
    "    \n",
    "    model = build_model()\n",
    "    \n",
    "    history = model.fit(\n",
    "        partial_train_data,\n",
    "        partial_train_targets,\n",
    "        validation_data=(val_data, val_targets),\n",
    "        epochs=num_epochs,\n",
    "        batch_size=16,\n",
    "        verbose=0)\n",
    "    mae_history = history.history['val_mae']\n",
    "    all_mae_histories.append(mae_history)\n",
    "\n",
    "# 计算每个epoch的平均MAE\n",
    "average_mae_history = [\n",
    "    np.mean([x[i] for x in all_mae_histories]) for i in range(num_epochs)\n",
    "]\n",
    "\n",
    "# 绘制验证MAE曲线\n",
    "plt.plot(range(1, len(average_mae_history) + 1), average_mae_history)\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Validation MAE')\n",
    "plt.title('Validation MAE vs. Epochs')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 剔除前10个数据点后重新绘制验证MAE曲线\n",
    "truncated_mae_history = average_mae_history[10:]\n",
    "plt.plot(range(11, len(average_mae_history) + 1), truncated_mae_history)\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Validation MAE')\n",
    "plt.title('Validation MAE vs. Epochs (Excluding First 10 Epochs)')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - loss: 521.8573 - mae: 20.8657   \n",
      "Epoch 2/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 379.1992 - mae: 17.2233 \n",
      "Epoch 3/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 208.5967 - mae: 12.0164 \n",
      "Epoch 4/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 92.9196 - mae: 7.4529  \n",
      "Epoch 5/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 45.1704 - mae: 4.9396 \n",
      "Epoch 6/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 38.7613 - mae: 4.2445 \n",
      "Epoch 7/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 22.7359 - mae: 3.4336 \n",
      "Epoch 8/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 17.9407 - mae: 3.1910 \n",
      "Epoch 9/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 23.8824 - mae: 3.3482 \n",
      "Epoch 10/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 19.0531 - mae: 3.0601 \n",
      "Epoch 11/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 14.3765 - mae: 2.6965 \n",
      "Epoch 12/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 17.6742 - mae: 2.9222 \n",
      "Epoch 13/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 14.3770 - mae: 2.7071 \n",
      "Epoch 14/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 14.7967 - mae: 2.6656\n",
      "Epoch 15/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 12.1965 - mae: 2.4039\n",
      "Epoch 16/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.9013 - mae: 2.3058\n",
      "Epoch 17/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 13.1955 - mae: 2.4497\n",
      "Epoch 18/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 13.3333 - mae: 2.6112 \n",
      "Epoch 19/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 12.6063 - mae: 2.3434 \n",
      "Epoch 20/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 9.9644 - mae: 2.2878  \n",
      "Epoch 21/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.6347 - mae: 2.3066 \n",
      "Epoch 22/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.7719 - mae: 2.2965\n",
      "Epoch 23/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.3577 - mae: 2.3164\n",
      "Epoch 24/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.5154 - mae: 2.1398 \n",
      "Epoch 25/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 14.2123 - mae: 2.3904 \n",
      "Epoch 26/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.0183 - mae: 2.2420 \n",
      "Epoch 27/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.5308 - mae: 2.2317\n",
      "Epoch 28/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.3186 - mae: 2.1779\n",
      "Epoch 29/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.5388 - mae: 2.0067 \n",
      "Epoch 30/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - loss: 10.1579 - mae: 2.2442 \n",
      "Epoch 31/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 10.1201 - mae: 2.1421 \n",
      "Epoch 32/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.1815 - mae: 2.0716 \n",
      "Epoch 33/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 9.7293 - mae: 2.1380 \n",
      "Epoch 34/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.8790 - mae: 1.9180 \n",
      "Epoch 35/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.9957 - mae: 2.1548  \n",
      "Epoch 36/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.6010 - mae: 1.9669 \n",
      "Epoch 37/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.6374 - mae: 2.1028 \n",
      "Epoch 38/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.7961 - mae: 2.0405 \n",
      "Epoch 39/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 7.1601 - mae: 1.9581\n",
      "Epoch 40/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.6691 - mae: 1.8891 \n",
      "Epoch 41/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.2492 - mae: 1.8854 \n",
      "Epoch 42/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.6821 - mae: 2.0715 \n",
      "Epoch 43/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.7170 - mae: 1.8809 \n",
      "Epoch 44/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - loss: 8.5256 - mae: 2.0589  \n",
      "Epoch 45/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - loss: 9.2634 - mae: 2.0261 \n",
      "Epoch 46/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.9985 - mae: 1.9531  \n",
      "Epoch 47/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - loss: 9.3182 - mae: 2.0090 \n",
      "Epoch 48/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.3885 - mae: 1.8480 \n",
      "Epoch 49/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.2456 - mae: 1.7083 \n",
      "Epoch 50/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.1157 - mae: 1.8384 \n",
      "Epoch 51/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.1908 - mae: 1.7655 \n",
      "Epoch 52/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.6236 - mae: 1.9086 \n",
      "Epoch 53/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.4598 - mae: 1.8445 \n",
      "Epoch 54/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.4092 - mae: 1.7416 \n",
      "Epoch 55/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.8250 - mae: 1.9442 \n",
      "Epoch 56/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.4103 - mae: 1.7195 \n",
      "Epoch 57/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.2544 - mae: 1.6974 \n",
      "Epoch 58/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 7.4009 - mae: 1.9350  \n",
      "Epoch 59/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.9251 - mae: 1.8910  \n",
      "Epoch 60/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.5822 - mae: 1.8041 \n",
      "Epoch 61/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - loss: 6.2483 - mae: 1.7865 \n",
      "Epoch 62/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.7542 - mae: 1.7479 \n",
      "Epoch 63/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.6996 - mae: 1.8955 \n",
      "Epoch 64/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.5393 - mae: 1.6148 \n",
      "Epoch 65/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.3082 - mae: 1.7032 \n",
      "Epoch 66/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 8.2961 - mae: 1.9124  \n",
      "Epoch 67/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 4.6646 - mae: 1.6209 \n",
      "Epoch 68/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.7405 - mae: 1.8136 \n",
      "Epoch 69/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.5140 - mae: 1.7465 \n",
      "Epoch 70/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.4090 - mae: 1.7606 \n",
      "Epoch 71/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.2835 - mae: 1.7426  \n",
      "Epoch 72/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.8552 - mae: 1.7918 \n",
      "Epoch 73/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.6050 - mae: 1.6565 \n",
      "Epoch 74/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.0726 - mae: 1.7487 \n",
      "Epoch 75/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.6668 - mae: 1.6783 \n",
      "Epoch 76/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 4.3898 - mae: 1.5193 \n",
      "Epoch 77/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 5.0266 - mae: 1.6329 \n",
      "Epoch 78/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - loss: 7.2477 - mae: 1.8040  \n",
      "Epoch 79/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 6.6994 - mae: 1.8241 \n",
      "Epoch 80/80\n",
      "\u001b[1m26/26\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - loss: 4.7094 - mae: 1.5511 \n",
      "\u001b[1m4/4\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 7ms/step - loss: 13.4749 - mae: 2.4443 \n",
      "\n",
      "测试集MAE: 2.65\n"
     ]
    }
   ],
   "source": [
    "# 训练最终模型\n",
    "model = build_model()\n",
    "model.fit(\n",
    "    train_data,\n",
    "    train_targets,\n",
    "    epochs=80,  # 根据验证曲线选择合适的epochs数\n",
    "    batch_size=16,\n",
    "    verbose=1\n",
    ")\n",
    "\n",
    "# 评估模型在测试集上的表现\n",
    "test_mse_score, test_mae_score = model.evaluate(test_data, test_targets)\n",
    "print(f\"\\n测试集MAE: {test_mae_score:.2f}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1m4/4\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 14ms/step\n",
      "\n",
      "预测结果:\n",
      "样本 1 的预测值: 80.07\n",
      "样本 2 的预测值: 182.60\n",
      "样本 3 的预测值: 203.00\n",
      "样本 4 的预测值: 319.19\n",
      "样本 5 的预测值: 232.08\n",
      "样本 6 的预测值: 204.30\n",
      "样本 7 的预测值: 248.33\n",
      "样本 8 的预测值: 211.62\n",
      "样本 9 的预测值: 192.95\n",
      "样本 10 的预测值: 214.04\n",
      "样本 11 的预测值: 180.78\n",
      "样本 12 的预测值: 160.74\n",
      "样本 13 的预测值: 158.40\n",
      "样本 14 的预测值: 391.37\n",
      "样本 15 的预测值: 206.43\n",
      "样本 16 的预测值: 189.34\n",
      "样本 17 的预测值: 240.26\n",
      "样本 18 的预测值: 166.18\n",
      "样本 19 的预测值: 185.12\n",
      "样本 20 的预测值: 253.97\n",
      "样本 21 的预测值: 107.50\n",
      "样本 22 的预测值: 131.12\n",
      "样本 23 的预测值: 198.50\n",
      "样本 24 的预测值: 143.65\n",
      "样本 25 的预测值: 172.28\n",
      "样本 26 的预测值: 239.57\n",
      "样本 27 的预测值: 276.43\n",
      "样本 28 的预测值: 256.26\n",
      "样本 29 的预测值: 109.06\n",
      "样本 30 的预测值: 180.57\n",
      "样本 31 的预测值: 188.55\n",
      "样本 32 的预测值: 133.26\n",
      "样本 33 的预测值: 311.25\n",
      "样本 34 的预测值: 222.16\n",
      "样本 35 的预测值: 180.81\n",
      "样本 36 的预测值: 78.62\n",
      "样本 37 的预测值: 161.59\n",
      "样本 38 的预测值: 162.43\n",
      "样本 39 的预测值: 182.27\n",
      "样本 40 的预测值: 238.13\n",
      "样本 41 的预测值: 281.86\n",
      "样本 42 的预测值: 258.93\n",
      "样本 43 的预测值: 136.01\n",
      "样本 44 的预测值: 414.80\n",
      "样本 45 的预测值: 267.41\n",
      "样本 46 的预测值: 235.57\n",
      "样本 47 的预测值: 266.63\n",
      "样本 48 的预测值: 162.59\n",
      "样本 49 的预测值: 224.16\n",
      "样本 50 的预测值: 214.89\n",
      "样本 51 的预测值: 331.03\n",
      "样本 52 的预测值: 183.19\n",
      "样本 53 的预测值: 104.86\n",
      "样本 54 的预测值: 145.86\n",
      "样本 55 的预测值: 333.81\n",
      "样本 56 的预测值: 261.62\n",
      "样本 57 的预测值: 125.35\n",
      "样本 58 的预测值: 463.49\n",
      "样本 59 的预测值: 322.60\n",
      "样本 60 的预测值: 222.69\n",
      "样本 61 的预测值: 248.67\n",
      "样本 62 的预测值: 165.31\n",
      "样本 63 的预测值: 139.97\n",
      "样本 64 的预测值: 189.38\n",
      "样本 65 的预测值: 227.70\n",
      "样本 66 的预测值: 189.07\n",
      "样本 67 的预测值: 132.63\n",
      "样本 68 的预测值: 201.74\n",
      "样本 69 的预测值: 113.91\n",
      "样本 70 的预测值: 76.31\n",
      "样本 71 的预测值: 249.41\n",
      "样本 72 的预测值: 280.14\n",
      "样本 73 的预测值: 260.37\n",
      "样本 74 的预测值: 113.29\n",
      "样本 75 的预测值: 239.66\n",
      "样本 76 的预测值: 160.24\n",
      "样本 77 的预测值: 178.88\n",
      "样本 78 的预测值: 223.51\n",
      "样本 79 的预测值: 329.69\n",
      "样本 80 的预测值: 98.03\n",
      "样本 81 的预测值: 193.44\n",
      "样本 82 的预测值: 357.91\n",
      "样本 83 的预测值: 147.14\n",
      "样本 84 的预测值: 131.70\n",
      "样本 85 的预测值: 166.43\n",
      "样本 86 的预测值: 167.10\n",
      "样本 87 的预测值: 222.88\n",
      "样本 88 的预测值: 202.41\n",
      "样本 89 的预测值: 204.28\n",
      "样本 90 的预测值: 308.28\n",
      "样本 91 的预测值: 188.99\n",
      "样本 92 的预测值: 176.84\n",
      "样本 93 的预测值: 239.71\n",
      "样本 94 的预测值: 405.80\n",
      "样本 95 的预测值: 340.50\n",
      "样本 96 的预测值: 198.48\n",
      "样本 97 的预测值: 333.33\n",
      "样本 98 的预测值: 471.76\n",
      "样本 99 的预测值: 242.68\n",
      "样本 100 的预测值: 448.60\n",
      "样本 101 的预测值: 292.56\n",
      "样本 102 的预测值: 193.32\n"
     ]
    }
   ],
   "source": [
    "# 准备新的预测数据 (这里使用一些示例数据)\n",
    "\n",
    "# 进行预测\n",
    "predictions = model.predict(test_data)\n",
    "\n",
    "# 将预测结果还原到原始尺度\n",
    "predictions = predictions * std + mean\n",
    "\n",
    "print(\"\\n预测结果:\")\n",
    "for i, pred in enumerate(predictions):\n",
    "    print(f\"样本 {i+1} 的预测值: {pred[0]:.2f}\")\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
